#ifndef MOVABLES_H
#define MOVABLES_H


#include <iostream> 
#include <allegro5\allegro.h>
#include <vector>
#include "global_variables.h"

using namespace std;

//define enumerated type Status in which ALIVE == 1 and DEAD == 0
enum Status{DEAD, AlIVE};

class Movables
{
public:
	
	//Don't need constructor as each child class initializes parameters

	void set_location(int new_x_loc, int new_y_loc);
	void set_x_boundary(int new_x_boundary);
	void set_y_boundary(int new_y_boundary);
	void set_direction(Direction new_dir);
	void set_speed(int new_speed);
	void set_status(Status new_status);
	void set_object_type(Movable_type object_type);

	int x_location();
	int y_location();
	int x_boundary();
	int y_boundary();
//return an int in place of enumerated type Direction so that it can be passed into an object
	int direction();
	int speed();
	bool status();
//return an int in place of enumerated tye Object_type so that it can be passed into another object
	int object_type();

//return the object bitmap, this allows monsters to have their own colours...
	ALLEGRO_BITMAP *get_bitmap();

protected:
	int _x_loc;
	int _y_loc;
	int _x_boundary;
	int _y_boundary;
	Direction _direction;
	int _speed;


	ALLEGRO_BITMAP * _bitmap;
		

	Status _status;
	Movable_type _type;
};

#endif